The role of the independent sector in the provision of elective care has been brought into the spotlight by rising pressures of the NHS and growing waiting lists. Our analysis aims to contribute to existing work undertaken by the Health Foundation investigating the landscape of independent sector healthcare services.
The Health Foundation found an increasing proportion of care is delivered by the independent sector; this varies by specialitiy and is highest in T&O, GI and ophthalmology. Treatment rates in all specialities are not achieving the 30%-increase target set to address the backlog of care. The Health Foundation suggests uptake in the independent sector is matching the reductions in NHS provided care. It was also found that the independent sector share of provision varies regionally and by deprivation measures.
We aim to further the above analysis by utilising patient-level inpatient and outpatient data to more closely examine trends in independent sector care. Given the above findings, we will focus on ophthalmology and orthopaedic care, presenting our findings by demographics, geographically and by procedure.
In an exploratory fashion, we will present the changing market share of independent care in elective ophthalmic and orthopaedic services. We will be guided by our preliminary findings starting by assessing patterns in national data developing on to consider local findings.
We gathered acute inpatient and outpatient data via the
Secondary Uses Services (SUS) dataset, accessed through the National
Commissioning Data Repository (NCDR) platform. To capture the
pre-pandemic context, we limit our data to the years 2017 through to
2022. We count completed inpatient admissions or outpatient attendances
filtered to only include non-emergency contacts with selected Healthcare
Resource Group (HRG) codes.
The HRG code describes the content of an admission in terms of resource required and is linked to the of commissioning care. We use commissioning codes rather than procedure codes because data completeness is preferable and they offer the suitable level of granularity for data processing and presentation of findings. All HRG codes were updated to their corresponding code in the most recent HRG version. The activity we captured was linked to the following HRG codes (right).
Data was accessed at a national level with local feilds included to indicate the patient’s ICS and local authority of residence. Similarly, the low level geography (LSOA) of the patient was included to link to the Index of Multiple Deprivation (IMD) to assign each admission to a deprivation decile (1 = most deprived 10% of the population, 10 = the most affluent 10% of the population).
The SUS data contains only NHS-funded care. We identified the sector in which the care was delivered by assessing the ODS provider type, linked to site (hospital/care centre) in which the care occurred. We compare the rate of NHS-funded care delivered in NHS sites to NHS-funded care delivered in independent sector sites. Limitations of our data dictate that we do not count any privately funded care, regardless of site of delivered.
Subchapter BZ – Eyes and Periorbita Procedures and
Disorders:
create_dt(
hrg_lookup %>%
filter(str_detect(procedure_group, "Eyes")) %>%
select(1,2) %>%
rename(HRG = hrg_3,
Procedure = procedure_desc)
)
Subchapter HN – Orthopaedic Non-Trauma Procedures:
create_dt(
hrg_lookup %>%
filter(str_detect(procedure_group, "Orthopaedic")) %>%
select(1,2) %>%
rename(HRG = hrg_3,
Procedure = procedure_desc)
)
Activity data was grouped by demographic, geographic and activity-type variables and counts of episodes, spells (admissions or attendances) and individuals were calculated. Aggregated data was exported from the NCDR SQL server and processed locally in RStudio/RMarkdown.
For each group of interest we had activity counts for care delivered in both the independent sector (IS) and in NHS clinical settings. We calculated the independent sector market share (%) as follows:
\[ IndependentSectorShare = ISActivity / (ISActivity + NHSActivity) * 100 \]
Incomplete admissions/attendances, i.e. those without a discharge date, were excluded. Similarly, those without valid identification numbers were excluded.
Upon publication of our findings, the underlying code will be available on Github.
# Time series by speciality
national_data %>%
group_by(der_activity_month, speciality) %>%
summarise(n_spells_IP = sum(n_spells_IP, na.rm = TRUE),
n_spells_OP = sum(n_spells_OP, na.rm = TRUE)) %>%
group_by(der_activity_month, speciality) %>%
mutate(all_activity = sum(n_spells_IP, n_spells_OP)) %>%
filter(der_activity_month > "2018-01-01" &
der_activity_month < "2022-11-01") %>%
ggplot(aes(x = der_activity_month, y = all_activity)) +
geom_point(alpha = 0.4) +
geom_smooth(method = "loess", span = 0.2, colour = "#5881c1") +
facet_grid(~speciality, scales = "free") +
scale_color_SU() +
scale_y_continuous(labels = comma, oob = squish) +
theme(strip.background = element_rect(fill = NA, colour = "grey"),
strip.text = element_text(face = "bold")
) +
labs(x = "", y = "Admissions",
title = "Trends in activity by speciality",
subtitle = "Monthly elective inpatient and outpatient activity | National | 2017-22")
In considering the trends in all activity we include both elective inpatient and outpatient contacts and both NHS and independent sector activity. We note the comparative volumes of activity by speciality and we note the different levels of post-pandemic recovery; ophthalmic activity has returned to pre-pandemic levels where orthopaedic activity has not.
In recent months, monthly orthopaedic activity counts have remained consistent while ophthalmic activity appears to be increased since the start of 2022.
# Time series by speciality and sector
national_data %>%
group_by(der_activity_month, type, speciality) %>%
summarise(n_spells_IP = sum(n_spells_IP, na.rm = TRUE),
n_spells_OP = sum(n_spells_OP, na.rm = TRUE)) %>%
group_by(der_activity_month, type, speciality) %>%
mutate(all_activity = sum(n_spells_IP, n_spells_OP)) %>%
filter(der_activity_month > "2018-01-01" &
der_activity_month < "2022-11-01") %>%
ggplot(aes(x = der_activity_month, y = all_activity)) +
geom_point(alpha = 0.4) +
geom_smooth(method = "loess", span = 0.2, colour = "#5881c1") +
facet_grid(type~speciality, scales = "free") +
scale_color_SU() +
scale_y_continuous(labels = comma, oob = squish) +
theme(strip.background = element_rect(fill = NA, colour = "grey"),
strip.text = element_text(face = "bold")
) +
labs(x = "", y = "Activity",
title = "Trends in activity by speciality and sector",
subtitle = "Monthly elective inpatient and outpatient activity | National | 2018-22",
caption = "Note: Independent sector activity consists of only NHS-funded care in the independent secetor")
National trends in ophthalmic and orthopaedic activity show vastly different post-pandemic recoveries. Orthopaedic activity in both NHS and independent sector settings have had consistent monthly volumes from early 2018 until the onset of the pandemic and have regained that consistency post-pandemic, albeit at slightly lower monthly rates; i.e. pre-pandemic levels have not yet been achieved.
Post-pandemic ophthalmic activity is most notably changed in the independent sector, where activity has continued to grow, at a faster rate that in was before the pandemic. The rate of ophthalmic activity in NHS settings has plateaued since early 2021 at near pre-pandemic levels.
# Orthopaedic
national_data %>%
group_by(der_activity_month, type, speciality) %>%
sum_spells_function(.) %>%
pivot_longer(cols = c(-der_activity_month, -type, -speciality)) %>%
mutate(name = case_when(str_detect(name, "IP") ~ "Inpatient admissions",
str_detect(name, "OP") ~ "Outpatient appointments",
TRUE ~ "Cost (£)")) %>%
filter(der_activity_month > "2018-01-01" &
der_activity_month < "2022-11-01") %>%
filter(speciality == "Orthopaedic") %>%
ggplot(aes(x = der_activity_month, y = value, colour = name, group = name)) +
geom_point(alpha = 0.4) +
geom_smooth(method = "loess", span = 0.2) +
facet_grid(str_wrap(name,15) ~ type, scales = "free") +
scale_color_SU() +
scale_y_continuous(labels = comma, oob = squish) +
theme(strip.background = element_rect(fill = NA, colour = "grey"),
strip.text = element_text(face = "bold"),
legend.position = "none"
) +
labs(x = "", y = "", colour = "Activity",
title = "Trends in activity and cost by speciality and sector: Orthopaedic",
subtitle = "Monthly elective activity | National | 2018-22")
# Ophthalmology
national_data %>%
group_by(der_activity_month, type, speciality) %>%
sum_spells_function(.) %>%
pivot_longer(cols = c(-der_activity_month, -type, -speciality)) %>%
mutate(name = case_when(str_detect(name, "IP") ~ "Inpatient admissions",
str_detect(name, "OP") ~ "Outpatient appointments",
TRUE ~ "Cost (£)")) %>%
filter(der_activity_month > "2018-01-01" &
der_activity_month < "2022-11-01") %>%
filter(speciality == "Ophthalmology") %>%
ggplot(aes(x = der_activity_month, y = value, colour = name, group = name)) +
geom_point(alpha = 0.4) +
geom_smooth(method = "loess", span = 0.2) +
facet_grid(str_wrap(name,15) ~ type, scales = "free") +
scale_color_SU() +
scale_y_continuous(labels = comma, oob = squish) +
theme(strip.background = element_rect(fill = NA, colour = "grey"),
strip.text = element_text(face = "bold"),
legend.position = "none"
) +
labs(x = "", y = "", colour = "Activity",
title = "Trends in activity and cost by speciality and sector: Ophthalmology",
subtitle = "Monthly elective activity | National | 2018-22")
The predominant type of ophthalmic care varies by sector; in NHS settings, more than 2 in every 3 contacts are delivered via outpatient attendances, where as care in the independent sector is most often provided in the form of inpatients admissions. These differences are likely a function of the types of procedures considered suitable to outsource from the NHS to independent providers.
national_data_procedure %>%
filter(speciality == "Orthopaedic") %>%
group_by(der_activity_month, type, speciality, procedure_desc_short) %>%
mutate(all_activity = sum(n_spells_IP, n_spells_OP)) %>%
filter(der_activity_month > "2018-01-01" &
der_activity_month < "2022-11-01") %>%
ggplot(aes(x = der_activity_month, y = all_activity, colour = type)) +
geom_smooth(method = "loess", span = 0.2) +
facet_wrap(~procedure_desc_short#, scales = "free"
) +
scale_color_SU() +
scale_y_continuous(labels = comma) +
theme(strip.background = element_rect(fill = NA, colour = "grey"),
strip.text = element_text(face = "bold"),
legend.position = "bottom"
) +
labs(x = "", y = "Activity", colour = "Sector",
title = "Trends in Orthopaedic activity by sector and procedure",
subtitle = "Monthly elective inpatient admissions and outpatient appointments | National | 2017-22")
Chart text …
national_data_procedure %>%
filter(speciality == "Orthopaedic") %>%
group_by(der_activity_month, type, speciality, procedure_desc_short) %>%
mutate(all_activity = sum(n_spells_IP, n_spells_OP)) %>%
filter(der_activity_month > "2018-01-01" &
der_activity_month < "2022-11-01") %>%
ggplot(aes(x = der_activity_month, y = all_activity, colour = type)) +
geom_smooth(method = "loess", span = 0.2) +
facet_wrap(~procedure_desc_short, scales = "free") +
scale_color_SU() +
scale_y_continuous(labels = comma) +
theme(strip.background = element_rect(fill = NA, colour = "grey"),
strip.text = element_text(face = "bold"),
legend.position = "bottom"
) +
labs(x = "", y = "Activity", colour = "Sector",
title = "Trends in Orthopaedic activity by sector and procedure",
subtitle = "Monthly elective inpatient admissions and outpatient appointments | National | 2017-22")
Chart text …
The most commonly undertaken orthopaedic procedures appear to be done on hands, knees and feet. The impacts of the COVID-19 pandemic appear to have been felt equally across different procedures; all seeing significant reductions and most not fully recovering to pre-pandemic levels. Within orthopaedic care, the market share taken up by the independent sector is relatively stable; similarly, the make-up of that IS market share is not dominated by any single procedure type - the types of procedures performed by the independent sector has remained stable in the post-pandemic era.
national_data_procedure %>%
filter(speciality == "Ophthalmology") %>%
group_by(der_activity_month, type, speciality, procedure_desc_short) %>%
mutate(all_activity = sum(n_spells_IP, n_spells_OP)) %>%
filter(der_activity_month > "2018-01-01" &
der_activity_month < "2022-11-01") %>%
ggplot(aes(x = der_activity_month, y = all_activity, colour = type)) +
geom_smooth(method = "loess", span = 0.2) +
facet_wrap(~procedure_desc_short#, scales = "free"
) +
scale_color_SU() +
scale_y_continuous(labels = comma) +
theme(strip.background = element_rect(fill = NA, colour = "grey"),
strip.text = element_text(face = "bold"),
legend.position = c(0.7,0.1)
) +
labs(x = "", y = "Activity", colour = "Sector",
title = "Trends in Ophthalmology activity by sector and procedure",
subtitle = "Monthly elective inpatient admissions and outpatient appointments | National | 2017-22")
If we view the trends in ophthalmic elective procedures over the last 5 years by procedure type on a fixed scale, we see Vitreous Retinal procedures are much more common than any others. Such 200,000 of these procedures are undertaken monthly at the national level. Rates were halved at the peak of the pandemic and have return to near pre-pandemic levels in recent months.
national_data_procedure %>%
filter(speciality == "Ophthalmology") %>%
group_by(der_activity_month, type, speciality, procedure_desc_short) %>%
mutate(all_activity = sum(n_spells_IP, n_spells_OP)) %>%
filter(der_activity_month > "2018-01-01" &
der_activity_month < "2022-11-01") %>%
ggplot(aes(x = der_activity_month, y = all_activity, colour = type)) +
geom_smooth(method = "loess", span = 0.2) +
facet_wrap(~procedure_desc_short, scales = "free") +
scale_color_SU() +
scale_y_continuous(labels = comma) +
theme(strip.background = element_rect(fill = NA, colour = "grey"),
strip.text = element_text(face = "bold"),
legend.position = c(0.7,0.1)
) +
labs(x = "", y = "Activity", colour = "Sector",
title = "Trends in Ophthalmology activity by sector and procedure",
subtitle = "Monthly elective inpatient admissions and outpatient appointments | National | 2017-22")
By viewing trends on variable scales, we see procedure-specific patterns more clearly. We note that Ocular Motility, Oculoplastics and Orbit and Lacrimal procedures have not returned to pre-pandmic levels and post-pandemic rates have plateaued. Rates in Cornea and Sclera procedures along with Glaucoma treatments have been trending upwards in NHS settings since early 2021. Is this a procedure type for which demand could be eased by increased provision in the independent sector?
# Cataract and Vitreous Retinal procedures
national_data_procedure %>%
filter(speciality == "Ophthalmology",
procedure_desc_short %in% c("Cataract",
"Vitreous Retinal")) %>%
group_by(der_activity_month, type, speciality, procedure_desc_short) %>%
mutate(all_activity = sum(n_spells_IP, n_spells_OP)) %>%
filter(der_activity_month > "2018-01-01" &
der_activity_month < "2022-11-01") %>%
ggplot(aes(x = der_activity_month, y = all_activity, colour = type)) +
geom_smooth(method = "loess", span = 0.2) +
facet_wrap(~procedure_desc_short, scales = "free") +
scale_color_SU() +
scale_y_continuous(labels = comma) +
theme(strip.background = element_rect(fill = NA, colour = "grey"),
strip.text = element_text(face = "bold"),
legend.position = "bottom"
) +
labs(x = "", y = "Activity", colour = "Sector",
title = "Trends in Ophthalmology activity by sector and procedure",
subtitle = "Monthly elective inpatient admissions and outpatient appointments | National | 2017-22")
Focusing on trends in provision of Vitreous Retinal procedures and Cataract surgeries, our primary observations are that:
national_data_ortho %>%
wrangle_function(., age_range) %>%
filter(var_1 != "100+") %>%
graph_function(., "Orthopaedic") +
facet_grid(~var_1, scales = "free")
national_data_ortho %>%
mutate(ethnic_group = case_when(ethnic_group %in% c("NULL", "99") ~ "Z", TRUE ~ ethnic_group)) %>%
mutate(ethnic_group = str_sub(ethnic_group, 1,1)) %>%
left_join(ethnicity_lookup, by = c("ethnic_group" = "Code")) %>%
wrangle_function(., ethnicity_broad) %>%
filter(var_1 != "Not stated_broad") %>%
graph_function(., "Orthopaedic") +
facet_grid(~var_1, scales = "free")
national_data_ortho %>%
wrangle_function(., imd_quintile) %>%
graph_function(., "Orthopaedic") +
facet_grid(~var_1, scales = "free")
# Stacked bar chart proportions
national_data_ortho %>%
wrangle_function(., duration_elective_wait_range) %>%
filter(var_1 != "500+") %>%
pivot_longer(cols = c(`Independent Sector`, NHS),
names_to = "sector",
values_to = "value"
) %>%
mutate(year = lubridate::year(der_activity_month)) %>%
group_by(year, var_1, name, sector) %>%
summarise(value = sum(value)) %>%
group_by(year, name, sector) %>%
mutate(prop = value/sum(value)*100) %>%
ggplot(aes(x = year, y = prop, fill = var_1)) +
geom_col(position = "stack", colour = "grey", alpha = 0.9, width = 0.7) +
facet_grid(name~sector) +
scale_fill_SU() +
theme(#legend.position = "none",
strip.background = element_rect(fill = NA, colour = "grey"),
strip.text = element_text(face = "bold"),
axis.title.x = element_blank()
) +
labs(y = "Proportion (%)",
fill = "Wait duration (days)",
title = "Change in wait time for treatment",
subtitle = "Proportion of elective orthopaedic care contacts by wait time | National | 2018-22"
)
national_data_ophthal %>%
wrangle_function(., age_range) %>%
filter(var_1 != "100+") %>%
graph_function(., "Ophthalmology") +
facet_grid(~var_1, scales = "free")
national_data_ophthal %>%
mutate(ethnic_group = case_when(ethnic_group %in% c("NULL", "99") ~ "Z", TRUE ~ ethnic_group)) %>%
mutate(ethnic_group = str_sub(ethnic_group, 1,1)) %>%
left_join(ethnicity_lookup, by = c("ethnic_group" = "Code")) %>%
wrangle_function(., ethnicity_broad) %>%
filter(var_1 != "Not stated_broad") %>%
graph_function(., "Ophthalmology") +
facet_grid(~var_1, scales = "free")
national_data_ophthal %>%
wrangle_function(., imd_quintile) %>%
graph_function(., "Ophthalmology") +
facet_grid(~var_1, scales = "free")
national_data_ophthal %>%
wrangle_function(., duration_elective_wait_range) %>%
filter(var_1 != "500+") %>%
pivot_longer(cols = c(`Independent Sector`, NHS),
names_to = "sector",
values_to = "value"
) %>%
mutate(year = lubridate::year(der_activity_month)) %>%
group_by(year, var_1, name, sector) %>%
summarise(value = sum(value)) %>%
group_by(year, name, sector) %>%
mutate(prop = value/sum(value)*100) %>%
ggplot(aes(x = year, y = prop, fill = var_1)) +
geom_col(position = "stack", colour = "grey", alpha = 0.9, width = 0.7) +
facet_grid(name~sector) +
scale_fill_SU() +
theme(#legend.position = "none",
strip.background = element_rect(fill = NA, colour = "grey"),
strip.text = element_text(face = "bold"),
axis.title.x = element_blank()
) +
labs(y = "Proportion (%)",
fill = "Wait duration (days)",
title = "Change in wait time for treatment",
subtitle = "Proportion of elective ophthalmology care contacts by wait time | National | 2018-22"
)
We attempt to assess the impact of deprivation and ethnicity independently by using the following plots:
# Ethnicity and deprivation
national_data_ortho %>%
mutate(ethnic_group = case_when(ethnic_group %in% c("NULL", "99") ~ "Z", TRUE ~ ethnic_group)) %>%
mutate(ethnic_group = str_sub(ethnic_group, 1,1)) %>%
left_join(ethnicity_lookup, by = c("ethnic_group" = "Code")) %>%
group_by(der_activity_month, imd_quintile, ethnicity_broad, type) %>%
sum_spells_function(.) %>%
group_by(der_activity_month, type, imd_quintile, ethnicity_broad) %>%
mutate(total_activity = sum(n_spells_IP, n_spells_OP)) %>%
pivot_longer(cols = c(-der_activity_month, -type, -ethnicity_broad, -imd_quintile)) %>%
pivot_wider(id_cols = c(der_activity_month, ethnicity_broad, imd_quintile, name),
names_from = type,
values_from = value
) %>%
mutate(`Independent Sector` = case_when(is.na(`Independent Sector`) ~ 0, TRUE ~ `Independent Sector`)) %>%
group_by(der_activity_month, ethnicity_broad, imd_quintile, name) %>%
mutate(prop = `Independent Sector`/ sum(`Independent Sector`, `NHS`) * 100) %>%
mutate(name = case_when(str_detect(name, "IP") ~ "Inpatient admissions",
str_detect(name, "OP") ~ "Outpatient appointments",
str_detect(name, "cost") ~ "Costs",
TRUE ~ "All activity")) %>%
filter(der_activity_month > "2018-01-01" &
der_activity_month < "2022-11-01") %>%
filter(name != "All activity") %>%
ungroup() %>%
filter(name != "Costs") %>%
filter(ethnicity_broad != "Not stated_broad") %>%
filter(is.finite(prop)) %>%
ggplot(aes(x = der_activity_month, y = prop, colour = name)) +
geom_smooth(method = "loess", span = 0.3, size = 0.75) +
facet_grid(str_wrap(ethnicity_broad,13)~imd_quintile) +
scale_color_SU() +
theme(strip.background = element_rect(fill = NA, colour = "grey"),
strip.text = element_text(face = "bold", size = 8),
axis.text.x = element_text(angle = 90),
legend.position = "bottom",
axis.text = element_text(size = 7),
axis.title.x = element_blank()
) +
labs(y = "Independent sector proportion (%)",
colour = "",
title = "Independent sector proportion of activity by deprivation quintile and ethnic group",
subtitle = "Orthopaedic elective procedures | National | 2018-22")
national_data_ophthal %>%
mutate(ethnic_group = case_when(ethnic_group %in% c("NULL", "99") ~ "Z", TRUE ~ ethnic_group)) %>%
mutate(ethnic_group = str_sub(ethnic_group, 1,1)) %>%
left_join(ethnicity_lookup, by = c("ethnic_group" = "Code")) %>%
group_by(der_activity_month, imd_quintile, ethnicity_broad, type) %>%
sum_spells_function(.) %>%
group_by(der_activity_month, type, imd_quintile, ethnicity_broad) %>%
mutate(total_activity = sum(n_spells_IP, n_spells_OP)) %>%
pivot_longer(cols = c(-der_activity_month, -type, -ethnicity_broad, -imd_quintile)) %>%
pivot_wider(id_cols = c(der_activity_month, ethnicity_broad, imd_quintile, name),
names_from = type,
values_from = value
) %>%
mutate(`Independent Sector` = case_when(is.na(`Independent Sector`) ~ 0, TRUE ~ `Independent Sector`)) %>%
group_by(der_activity_month, ethnicity_broad, imd_quintile, name) %>%
mutate(prop = `Independent Sector`/ sum(`Independent Sector`, `NHS`) * 100) %>%
mutate(name = case_when(str_detect(name, "IP") ~ "Inpatient admissions",
str_detect(name, "OP") ~ "Outpatient appointments",
str_detect(name, "cost") ~ "Costs",
TRUE ~ "All activity")) %>%
filter(der_activity_month > "2018-01-01" &
der_activity_month < "2022-11-01") %>%
filter(name != "All activity") %>%
ungroup() %>%
filter(name != "Costs") %>%
filter(ethnicity_broad != "Not stated_broad") %>%
ggplot(aes(x = der_activity_month, y = prop, colour = name)) +
geom_smooth(method = "loess", span = 0.3, size = 0.75) +
facet_grid(str_wrap(ethnicity_broad,13)~imd_quintile) +
scale_color_SU() +
theme(strip.background = element_rect(fill = NA, colour = "grey"),
strip.text = element_text(face = "bold", size = 8),
axis.text.x = element_text(angle = 90),
legend.position = "bottom",
axis.text = element_text(size = 7),
axis.title.x = element_blank()
) +
labs(y = "Independent sector proportion (%)",
colour = "",
title = "Independent sector proportion of activity by deprivation quintile and ethnic group",
subtitle = "Ophthalmology elective procedures | National | 2018-22")
stp_data_ortho %>%
wrangle_function(., nhser20nm) %>%
filter(!is.nan(prop)) %>%
pivot_longer(cols = c(`Independent Sector`, NHS),
names_to = "sector") %>%
ggplot(aes(x = der_activity_month, y = value, colour = var_1)) +
geom_smooth(method = 'loess', span = 0.4, se = FALSE, size = 1.25) +
facet_grid(name~sector) +
scale_color_SU() +
scale_y_continuous(labels = comma) +
theme(strip.text = element_text(face = "bold"),
strip.background = element_rect(fill = NA, colour = "grey"),
axis.title.x = element_blank()
) +
labs(y = "Activity",
colour = "NHSE region",
title = "Regional activity volumes by care type and sector: Orthopaedic",
subtitle = "Monthly elective activity counts | NHSE region | 2018-22")
Graph desc…
stp_data_ophthal %>%
wrangle_function(., nhser20nm) %>%
filter(!is.nan(prop)) %>%
pivot_longer(cols = c(`Independent Sector`, NHS),
names_to = "sector") %>%
ggplot(aes(x = der_activity_month, y = value, colour = var_1)) +
geom_smooth(method = 'loess', span = 0.4, se = FALSE, size = 1.25) +
facet_grid(name~sector, scales = "free") +
scale_color_SU() +
scale_y_continuous(labels = comma) +
theme(strip.text = element_text(face = "bold"),
strip.background = element_rect(fill = NA, colour = "grey"),
axis.title.x = element_blank()
) +
labs(y = "Activity",
colour = "NHSE region",
title = "Regional activity volumes by care type and sector: Ophthalmology",
subtitle = "Monthly elective activity counts | NHSE region | 2018-22")
Graph desc…
Volume section desc
Independent sector share section desc …
ICB_graph_function(stp_data_ortho, "Orthopaedic")
Graph desc…
ICB_graph_function(stp_data_ophthal, "Ophthalmology")
Graph desc…
STP/ICB section desc …
ICB_graph_function(stp_data_ophthal %>%
filter(procedure_desc_short == "Cataract"),
"Ophthalmology - Cataract")
Graph desc…
ICB_graph_function(stp_data_ophthal %>%
filter(procedure_desc_short == "Vitreous Retinal"),
"Ophthalmology - Vitreous Retinal")
Graph desc…
ICB_graph_function(stp_data_ophthal %>%
filter(procedure_desc_short == "Glaucoma"),
"Ophthalmology - Glaucoma")
Graph desc…
Section desc
ICB_graph_function(stp_data_ophthal %>%
filter(imd_quintile == 1),
"Ophthalmology - IMD quintile 1")
Graph desc…
ICB_graph_function(stp_data_ophthal %>%
filter(imd_quintile == 2),
"Ophthalmology - IMD quintile 2")
Graph desc…
ICB_graph_function(stp_data_ophthal %>%
filter(imd_quintile == 3),
"Ophthalmology - IMD quintile 3")
Graph desc…
ICB_graph_function(stp_data_ophthal %>%
filter(imd_quintile == 4),
"Ophthalmology - IMD quintile 4")
Graph desc…
ICB_graph_function(stp_data_ophthal %>%
filter(imd_quintile == 5),
"Ophthalmology - IMD quintile 5")
Graph desc…